﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using UricaoWeb.Datos.ConexionBD.Seguridad_y_Roles;
using UricaoWeb.LogicaDeNegocios.Seguridad_y_Roles;

namespace UricaoWeb.Presentacion
{
    public partial class API_Seguridad_Login_ : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }
        /// <summary>
        /// Este método borra la variable sesión y redirige al usuario a la página login
        /// </summary>
        protected void cerrar_sesion(object sender, EventArgs e)
        {
            //nombrelogin.Text = "Login";
            Session["user"] = null;
            try
            {
                Server.Transfer("API_Seguridad_Login_.aspx", false);
            }
            catch { }
        }

        /// <summary>
        /// este método se usa cuando le damos al botón login recoge los datos de los campos usuario y contrasena
        /// y llama al metodo de login de la capa logica de negocios
        /// </summary>
        protected void Login(object sender, EventArgs e)
        {
            string _usuariologin = usuario.Text;
            string _contraseñalogin = contrasena.Text;
            verificar.Text = "";
            //se inicializa el objeto tipo Logica_Usuario para guardar los datos del usuario
            Logica_Usuario _login = new Logica_Usuario();
            //Se guarda los datos necesarios del usuario en el objeto _login por medio de las credenciales
            _login = UricaoWeb.LogicaDeNegocios.Seguridad_y_Roles.Login.login(_usuariologin, _contraseñalogin);

            if (ValidarCampos())
            {
                if (_login.NombreEmpleado == null || _login.NombreEmpleado.Equals(""))
                {
                    verificar.Text = "Usuario o password incorrectos";
                    nombrelogin.Text = "Login";
                    Session["user"] = null;
                }
                else
                {
                    verificar.Text = "";
                    //asigna La variable session con ID "user" a _login
                    Session["user"] = _login;
                    //se hace casting de logica_usuario a session para poder asignarla a _usuario
                    Logica_Usuario _usuario = (Logica_Usuario) Session["user"];
                    nombrelogin.Text = "Hola!, " + _usuario.NombreEmpleado + " " + _usuario.ApellidoEmpleado;
                    Server.Transfer("Default.aspx", false);
                }
            }
            else {
                    verificar.Text = "Campo usuario o contraseña vacios";
            }
        }

        /// <summary>
        /// Método que valida si los campos login estan vacios o no
        /// </summary>
        /// <returns>true si los campos no están vacios, false si los campos están vacios</returns>
        private bool ValidarCampos()
        {
            bool vacio=false;
            string _usuariologin = usuario.Text;
            string _contraseñalogin = contrasena.Text;

            if ((_usuariologin == "") || (_contraseñalogin == ""))
            {
                return vacio;
            }
            else {
                return vacio=true;
            }
        }

        /// <summary>
        /// Método que envia un email al usuario con su usuario
        /// </summary>
        protected void brecordar_usuario_acc(object sender, EventArgs e)
        {
            string _correo = recordar_usuario_email.Text;
            string _nombre = recordar_usuario_nombre.Text;
            string _apellido = recordar_usuario_apellido.Text;
            if (Validar_Campos_brecordar_Usuario())
            {
                string _user = UricaoWeb.LogicaDeNegocios.Seguridad_y_Roles.Login.recordarUsuario(_nombre, _apellido, _correo);
                {
                    if (_user.Equals(" "))
                        verificar.Text = "Usuario no Encontrado";
                    else
                    {
                        verificar_record_usuario.Text = "Email enviado";
                        UricaoWeb.LogicaDeNegocios.Seguridad_y_Roles.Login.EnviarCorreo(_correo, _user);
                    }
                }

            }
            else
            {
                verificar.Text = "Algunos datos nos fueron suministrados";
            }
        }

        /// <summary>
        /// Método que envia un email al usuario con su nueva contraseña
        /// </summary>
        protected void brecordar_contrasena_acc(object sender, EventArgs e)
        {
            if (Validar_Campos_brecordar_contrasena())
            {
                string _usuario = recordar_contrasena_usuario.Text;
                string _idUsuario = UricaoWeb.LogicaDeNegocios.Seguridad_y_Roles.Login.VeficarUsuario(_usuario);
                string _idUsuario1 = _idUsuario;
                string _password;
                if (_idUsuario.Equals("") || _idUsuario == null || _idUsuario.Equals(" "))
                {
                    verificar.Text = "El usuario no existe";
                }
                else
                {
                            string _correo = UricaoWeb.LogicaDeNegocios.Seguridad_y_Roles.Login.VeficarCorreo(_usuario, Convert.ToInt32(_idUsuario1));
                            if (_correo.Equals(" "))
                                verificar.Text = "no trajo nada";
                            else
                            {
                                _password = UricaoWeb.LogicaDeNegocios.Seguridad_y_Roles.Login.CambiandoContrasena(_idUsuario, _usuario);
                                UricaoWeb.LogicaDeNegocios.Seguridad_y_Roles.Login.EnviarCorreoContrasena(_correo, _password);
                                verificar.Text = "Email enviado";
                            }
                }
            }
            else
                verificar.Text = "Algunos datos nos fueron suministrados";
        }

        /// <summary>
        /// Método que valida si los campos de recordar usuario estan vacios o no
        /// </summary>
        /// <returns>true si los campos no están vacios, false si los campos están vacios</returns>
        private bool Validar_Campos_brecordar_Usuario()
        {
            bool vacio = false;
            string _correo = recordar_usuario_email.Text;
            string _nombre = recordar_usuario_nombre.Text;
            string _apellido = recordar_usuario_apellido.Text;

            if ((_correo == "") || (_nombre == "") || (_apellido == ""))
            {
                return vacio;
            }
            else
            {
                return vacio = true;
            }
        }

        /// <summary>
        /// Método que valida si los campos recordar contraseña estan vacios o no
        /// </summary>
        /// <returns>true si los campos no están vacios, false si los campos están vacios</returns>
        private bool Validar_Campos_brecordar_contrasena()
        {
            bool vacio = false;

            string _usuario = recordar_contrasena_usuario.Text;
            if ((_usuario == ""))
            {
                return vacio;
            }
            else
            {
                return vacio = true;
            }
        }

    }
}